/*
ont-space - The ontology-based resource metadata repository
Copyright (c) 2006-2008, Information Eng. Research Unit - Univ. of Alcalá
http://www.cc.uah.es/ie
This library is free software; you can redistribute it and/or modify it under
the terms of the GNU Lesser General Public License as published by the Free
Software Foundation; either version 2.1 of the License, or (at your option)
any later version.
This library is distributed in the hope that it will be useful, but WITHOUT
ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more
details.
You should have received a copy of the GNU Lesser General Public License along
with this library; if not, write to the Free Software Foundation, Inc.,
59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
 */
package org.ontspace.util.translator.sld2owl.owl;

import java.util.Iterator;
import com.hp.hpl.jena.ontology.*;
import com.hp.hpl.jena.rdf.model.RDFNode;

/**
 * This class find the instance created of a determinated class and with a determinated value in identifier property
 */
public class searchInstance {

    /** Creates a new instance of lastInstanceSLDTranslator */
    public searchInstance() {
    }

    /**
     * Search the last intance created of a determinated class and with a determinated value in identifier property
     * @param co the class
     * @param identifier the identifier property
     * @param value value to search
     */
    public Individual search(OntClass co, DatatypeProperty identifier,
            RDFNode value) {

        boolean encontrado =
                false;
        try {
            if (co != null) {
                Iterator list =
                        co.listInstances();
                if (list != null) {
                    Iterator iit =
                            co.listInstances();
                    Individual i =
                            null;
                    while (iit.hasNext() && (!encontrado)) {
                        i =
                                (Individual) iit.next();
                        if (String.valueOf(i.getPropertyValue(identifier)).
                                compareTo(value.toString()) == 0) {
                            encontrado =
                                    true;
                        }
                    }
                    if (encontrado) {
                        return i;
                    } else {
                        return null;
                    }
                } else {
                    return null;
                }

            } else {
                return null;
            }


        } catch (Exception e) {
            System.out.println("Error2" + e.toString());
            return null;
        }
    }
}
